import axios from "axios";
import { ElMessage, ElMessageBox } from "element-plus";
import config from "@/config";

const service = axios.create({
  baseURL: config.baseApi,
});
// const NETWORK_ERROR = "网络错误11111111";

// 请求拦截器
service.interceptors.request.use(
  (config) => {
    // 可以在这里添加请求头，例如添加 token
    // const token = localStorage.getItem("token");
    // if (token) {
    //   config.headers["Authorization"] = `Bearer ${token}`;
    // }
    return config;
  },
  (error) => {
    // console.error("请求拦截器错误:", error);
    return Promise.reject(error);
  }
);
// 响应拦截器
service.interceptors.response.use(
  (res) => {
    // debugger;
    const { code, data, msg } = res.data;
    if (code === 200) {
      return data;
    } else {
      const NETWORK_ERROR = "网络错误11111111";
      ElMessage.error(msg || NETWORK_ERROR);
      return Promise.reject(msg || NETWORK_ERROR);
    }
  },
  (error) => {
    const NETWORK_ERROR = "网络错误，请检查网络连接";
    ElMessage.error(NETWORK_ERROR);
    console.error("响应拦截器错误:", error);
    return Promise.reject(error);
  }
);

function request(options) {
  options.method = options.method || "get";
  //关于get请求参数进行调整
  if (options.method.toLowerCase() === "get") {
    options.params = options.data;
  }
  //对mock开关进行一个处理
  let isMock = config.mock;
  if (typeof options.mock !== "undefined") {
    isMock = options.mock;
  }
  //针对环境进行处理
  if (config.env === "prod") {
    //线上环境，不能使用mock
    service.defaults.baseURL = config.baseApi;
  } else {
    service.defaults.baseURL = isMock ? config.mockApi : config.baseApi;
  }
  return service(options);
}
export default request;
